﻿using System;
using System.Collections.Generic;
using System.Text;
using BarCode.Common;
using BarCode.Module;
using BarCode.AccessDao;
using BarCode.Bean;

namespace BarCode.Module
{
    public class modMain
    {
        private static readonly log4net.ILog LogUtil = log4net.LogManager.GetLogger(typeof(modMain));

        public static int loadApp()
        {
            
            // 加载数据库
            ConfigMdbDao configMdbDao = new ConfigMdbDao();

            // 获取生产线编号
            GlobalVal.Line_No = configMdbDao.getLineNo();
            if (String.IsNullOrEmpty(GlobalVal.Line_No))
            {
                LogUtil.Error("生产线编号读取失败！");
                return Consts.RET_FAIL;
            }


            IniFileHelper.IniFile();
            // 读取启动加载数据标志
            IniFileHelper.ReadLoadServerDataFlag();
            // 获取数据库系统时间差
            GlobalVal.Diff_Hour = IniFileHelper.getDiffHour(); 
            // 表类型
            GlobalVal.MeterType = IniFileHelper.getStringValue("System", "Meter_Type");

            // 读取MySql数据库信息
            GlobalVal.serverMysqlInfo = IniFileHelper.ReadMySqlAccessInfo("MySql");
            if (GlobalVal.serverMysqlInfo == null)
            {
                LogUtil.Error("数据库配置数据读取失败！");
                MessageUtil.Error("INI配置文件读取失败！");
                return Consts.RET_FAIL;
            }

            // 获取数据库系统时间差
            GlobalVal.BASE_COUNT = IniFileHelper.getBaseCount(); 
            //// 获取窗体名称
            //GlobalVal.FORM_TITLE = IniFileHelper.getFormTitle();

            // 查询前道工序是否存在 最大记录数
            GlobalVal.PRE_EXIST_RECORD = IniFileHelper.getIntegerValue("System", "PRE_EXIST_RECORD");
            if (GlobalVal.PRE_EXIST_RECORD < 0 ) {
                LogUtil.Warn("查询前道工序是否存在的最大记录数获取失败，设定为默认值1000");
                GlobalVal.PRE_EXIST_RECORD = 1000;
            }
            // 查询本道工序是否重复 最大记录数
            GlobalVal.CUR_REPEAT_RECORD = IniFileHelper.getIntegerValue("System", "CUR_REPEAT_RECORD");
            if (GlobalVal.CUR_REPEAT_RECORD < 0)
            {
                LogUtil.Warn("查询本道工序是否重复的最大记录数获取失败，设定为默认值5");
                GlobalVal.CUR_REPEAT_RECORD = 5;
            }

            // 服务器数据库
            DB01Dao db01 = new DB01Dao(GlobalVal.serverMysqlInfo.MYSQL_IP, GlobalVal.serverMysqlInfo.USERID, GlobalVal.serverMysqlInfo.USERPWD);
            if (db01.EnableConnect())
            {
                int delCnt = 0;
                if ("1".Equals(GlobalVal.LoadUsers))
                {
                    // 删除本地非管理员用户信息
                    delCnt = configMdbDao.deleteNotAdminUser();
                    LogUtil.Debug("删除本地非管理员用户信息件数：" + delCnt);
                    // 从服务器获取用户数据
                    List<UserBean> lstUser = db01.getUserInfo(GlobalVal.Line_No);
                    // 插入本地数据库
                    int userCnt = configMdbDao.insertUsers(lstUser);
                    LogUtil.Debug("插入用户数据信息件数：" + userCnt);
                }
                
                configMdbDao.Release();

            }
           
            return Consts.RET_SUCCESS;
        }

    }
}
